今天,我們將深入探討如何使用 Grafana 對 Prometheus 中收集到的數據進行可視化。雖然 Prometheus 本身已經提供了查詢和簡單的圖表功能,但使用 Grafana 可以讓我們更直觀地展示和分析這些數據,提升監控的效率和靈活性。
Grafana 是一個開源的數據可視化和監控平台,專門用於整合來自不同數據源的數據,並將這些數據以可視化圖表的方式呈現。它可以與多種數據源(例如 Prometheus、Elasticsearch、MySQL 等)整合,並且提供動態篩選、圖表自定義、儀表板分享等強大功能。對於 DevOps 團隊而言,Grafana 是日常系統監控與數據分析的核心工具之一。
雖然 Prometheus 本身提供了 Web UI 來查詢和展示數據,但它在可視化方面有一些局限性。以下是選擇 Grafana 而非直接使用 Prometheus Web UI 的原因:
相比 Prometheus Web UI,Grafana 擁有以下優勢:
在 Kubernetes 叢集中,我們可以通過 Helm 快速安裝 Grafana。
在 Kubernetes 叢集中,我們可以通過 Helm 來安裝 Grafana。
首先,添加 Grafana 的 Helm repository:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
接著,使用 Helm 安裝 Grafana:
helm install grafana grafana/grafana
訪問 Grafana 的 Web UI
kubectl port-forward service/grafana 3000:80
# 或按照安裝完的提示,Get the Grafana URL to visit by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=grafana" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace default port-forward $POD_NAME 3000
這樣,Grafana 的 Web 介面就可以在 http://localhost:3000
或 http://127.0.0.1:3000
上訪問。
初始登錄時,使用預設的帳號和密碼:
admin
# Get your 'admin' user password by running:
kubectl get secret --namespace default grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
在 Grafana 中,我們可以將 Prometheus 設置為數據源,並開始建立可視化儀表板。
登錄 Grafana Web UI 後,點擊左側的選單, "Connections > Data sources"。
點擊 "Add data source",然後選擇 Prometheus。
在 URL 欄位填寫 Prometheus 的地址,一般預設是 http://prometheus-server.default.svc.cluster.local:9090
。
點擊 Save & Test 來保存設置,並確認與 Prometheus 成功連接。
如果在這個步驟遇到問題:
用以下命令檢查服務的連接埠
kubectl get svc -n default
根據結果,我的Prometheus 服務 prometheus-server
使用的是 80 port,而不是 Prometheus 默認的 9090 port。這可能是導致 Grafana 無法連接的原因。我將URL改為 http://prometheus-server.default.svc.cluster.local:80
,就可以成功添加了~
container_cpu_usage_seconds_total
,再按 ”Run query” 或圖表右上方的重整圖示,就能看到結果。可以創建一個專門用於 Kubernetes 監控各項 metric 的儀表板,例如:
container_cpu_usage_seconds_total
container_memory_usage_bytes
kube_pod_status_phase
這些面板能幫助我們及時掌握 Kubernetes 叢集和應用的運行情況。
監控 是 DevOps 的重要支柱之一,它讓團隊能夠即時洞察系統的運行狀態,並及時應對潛在的問題。使用 Prometheus 和 Grafana 的組合,DevOps 團隊可以更好地理解應用的性能、預測資源需求,並確保系統的穩定性與可擴展性。
今天我們學習了如何使用 Grafana 進行 Prometheus 數據的可視化和告警設置。Grafana 能讓我們更直觀地理解系統的運行狀態,並在問題發生時即時通知團隊進行應對。這樣的監控與可視化功能,對於 DevOps 團隊來說是不可或缺的利器~